The invention is related to the field of high computing processor, and in particular to concurrency control mechanisms for highly multi-threaded systems.
Much of modern software is highly multi-threaded, that is different threads of control executing through a program are active at the same time. More and more computer hardware is implementing support for such multi-threading, as are many programming languages and program packages. A key attribute of such programming is the ability of a thread to “spawn” a new child thread to pursue some line of computation independent of the parent thread.
There are several implementation problems with this that have to date been answered in an ad hoc fashion: how to allocate and control the number of child threads that may be spawned so that limited resources are not overrun, but still use them efficiently; how to control the spawning behavior of child threadlets; and how to detect when a thread and all its children have completed.